#ifndef INC_HARDWARE_H_
#define INC_HARDWARE_H_

// ------------------ 辅助宏定义 ------------------
#define PI 3.14159265358979323846f
#define RPM_TO_RAD_S(x) ((x) * (2.0f * PI / 60.0f))
#define RAD_S_TO_RPM(x) ((x) * (60.0f / (2.0f * PI))
// ------------------ 硬件相关的常量定义 ------------------
// 24V分压比例
#define VM_FACTOR (5.1f / (47.0f + 5.1f))
// NTC上拉电阻阻值，单位Ω
#define NTC_R_REF 10000.0f
// 采样电阻阻值，单位Ω
#define R_SENSE 0.01f
// 电流放大器增益
#define OPAMP_GAIN (11.0f / 1.5f)
// 12位ADC，满量程时的最大数据，注意满量程是4095，不是4096
#define ADC_RESOLUTION 4095.0f
// 电流计算方式如下, VREF约为3.3V，取值范围3.1 - 3.5V
// (ADC - OFFSET) * ( VREF / ( R_SENSE * OPAMP_GAIN * ADC_RESOLUTION) )

// 最大工作电压，单位V
#define PROTECT_VM_OVER_VOLTAGE 30.0f
// 最小工作电压，单位V
#define PROTECT_VM_UNDER_VOLTAGE 18.0f
// 最大VREF电压，单位V
#define PROTECT_VREF_OVER_VOLTAGE 3.5f
// 最小VREF电压，单位V
#define PROTECT_VREF_UNDER_VOLTAGE 3.1f
// 允许的峰值电流，单位A
#define PROTECT_OVER_CURRENT 20.0f
// 最大允许速度，单位rad/s
#define PROTECT_OVER_SPEED RPM_TO_RAD_S(4000.0f)
// 最大允许MCU温度，单位摄氏度，规格书中的允许值为-40 ~ +125℃
#define PROTECT_MCU_OVER_TEMPERATURE 110
// 最大允许NTC温度，单位摄氏度，规格书中的允许值为-55 ~ +175℃
#define PROTECT_NTC_OVER_TEMPERATURE 100
// 最大允许连续出现的角度传感器错误数量
#define PROTECT_MT6835_ERROR_COUNT 4
// 电流传感器校准调整范围，例如0.05代表零点位置、增益误差与理想值最大偏离8%
#define PROTECT_CURRENT_SENSOR 0.08f

#endif /* INC_HARDWARE_H_ */
